// 全局搜索相关API接口
import { get, post, put, del } from '../utils/request'
import { addBatchDefaults } from '../utils/batchUtils'

/**
 * 全局搜索
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.type - 搜索类型 (all, colors, styles, batches)
 * @param {string} params.brand - 品牌筛选
 * @param {string} params.season - 季次筛选
 * @param {string} params.status - 状态筛选
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise<Object>} 搜索结果
 */
export const globalSearch = async (params = {}) => {
  try {
    const response = await get('/api/search/global', params)
    return response.data
  } catch (error) {
    console.error('全局搜索失败:', error)
    throw error
  }
}

/**
 * 搜索颜色
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.brand - 品牌筛选
 * @param {string} params.season - 季次筛选
 * @param {string} params.status - 状态筛选
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise<Object>} 搜索结果
 */
export const searchColors = async (params = {}) => {
  try {
    const response = await get('/api/search/colors', params)
    return response.data
  } catch (error) {
    console.error('搜索颜色失败:', error)
    throw error
  }
}

/**
 * 搜索款式
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.brand - 品牌筛选
 * @param {string} params.season - 季次筛选
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise<Object>} 搜索结果
 */
export const searchStyles = async (params = {}) => {
  try {
    const response = await get('/api/search/styles', params)
    return response.data
  } catch (error) {
    console.error('搜索款式失败:', error)
    throw error
  }
}

/**
 * 搜索批次
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.brand - 品牌筛选
 * @param {string} params.season - 季次筛选
 * @param {string} params.status - 状态筛选
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise<Object>} 搜索结果
 */
export const searchBatches = async (params = {}) => {
  try {
    const response = await get('/api/search/batches', params)
    return response.data
  } catch (error) {
    console.error('搜索批次失败:', error)
    throw error
  }
}

/**
 * 获取搜索建议
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @param {string} params.type - 建议类型 (all, styles, colors, brands)
 * @returns {Promise<Array>} 建议列表
 */
export const getSearchSuggestions = async (params = {}) => {
  try {
    const response = await get('/api/search/suggestions', params)
    return response.data
  } catch (error) {
    console.error('获取搜索建议失败:', error)
    throw error
  }
}

/**
 * 获取搜索历史
 * @returns {Promise<Array>} 搜索历史列表
 */
export const getSearchHistory = async () => {
  try {
    const response = await get('/api/search/history')
    return response.data
  } catch (error) {
    console.error('获取搜索历史失败:', error)
    throw error
  }
}

/**
 * 保存搜索历史
 * @param {Object} params - 搜索参数
 * @param {string} params.keyword - 搜索关键词
 * @returns {Promise<boolean>} 保存结果
 */
export const saveSearchHistory = async (params) => {
  try {
    const response = await post('/api/search/history', params)
    return response.code === 200
  } catch (error) {
    console.error('保存搜索历史失败:', error)
    throw error
  }
}

/**
 * 清除搜索历史
 * @returns {Promise<boolean>} 清除结果
 */
export const clearSearchHistory = async () => {
  try {
    const response = await del('/api/search/history')
    return response.code === 200
  } catch (error) {
    console.error('清除搜索历史失败:', error)
    throw error
  }
}

/**
 * 执行批量操作
 * @param {Object} params - 操作参数
 * @param {string} params.operation - 操作类型 (downgrade, apply-template)
 * @param {Array} params.itemIds - 项目ID数组
 * @param {Object} params.params - 操作参数
 * @returns {Promise<Object>} 操作结果
 */
export const executeBatchOperation = async (params) => {
  try {
    const response = await post('/api/search/batch-operations', params)
    return response.data
  } catch (error) {
    console.error('执行批量操作失败:', error)
    throw error
  }
}
